Está usted leyendo la versión RMarkdown de la Tarea 1 de la clase de Visualización de Datos de la Maestría en Periodismo sobre Políticas Públicas.
Estas son las bases de datos y paquetes que utilizaremos y/o necesitamos instalar.
Sys.setlocale("LC_ALL", "es_ES.UTF-8")
## [1] "es_ES.UTF-8/es_ES.UTF-8/es_ES.UTF-8/C/es_ES.UTF-8/en_US.UTF-8"
options(scipen = 999)
# Librerias a utilizar
library(pacman)
library(leaflet)
library(htmlwidgets)
library(webshot)
library(DT)
library(kableExtra)
library(prettydoc)
library(rmarkdown)
p_load(tidyverse,
plotly,
sf,
viridis,
readxl,
scales)
# Bases de datos
idh <- read_csv("01_Datos/Indice de Desarrollo Humano.csv")
## Parsed with column specification:
## cols(
## Year = col_double(),
## Clave = col_character(),
## CVE_ENT = col_character(),
## Entidad = col_character(),
## CVE_MUN = col_character(),
## Municipio = col_character(),
## CODGEO = col_character(),
## Indicador = col_character(),
## Ponderador = col_double(),
## Valor = col_double()
## )
mpios <- st_read("01_datos/mpios.geojson")
## Reading layer `mpios_con_menos_islas_aun' from data source `/Users/arturo/R_CIDE/Arturo_MPPP/01_datos/mpios.geojson' using driver `GeoJSON'
## Simple feature collection with 2465 features and 9 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -118.3651 ymin: 14.5321 xmax: -86.71041 ymax: 32.71865
## CRS: 4326
recreo <- read_csv("01_datos/denue_cvs.csv")
## Parsed with column specification:
## cols(
## .default = col_character(),
## id = col_double(),
## codigo_act = col_double(),
## numero_ext = col_double(),
## edificio_e = col_double(),
## numero_int = col_double(),
## cod_postal = col_double(),
## cve_ent = col_double(),
## cve_mun = col_double(),
## cve_loc = col_double(),
## manzana = col_double(),
## telefono = col_double(),
## latitud = col_double(),
## longitud = col_double()
## )
## See spec(...) for full column specifications.
diamonds
## # A tibble: 53,940 x 10
## carat cut color clarity depth table price x y z
## <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
## 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
## 3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
## 4 0.290 Premium I VS2 62.4 58 334 4.2 4.23 2.63
## 5 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75
## 6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48
## 7 0.24 Very Good I VVS1 62.3 57 336 3.95 3.98 2.47
## 8 0.26 Very Good H SI1 61.9 55 337 4.07 4.11 2.53
## 9 0.22 Fair E VS2 65.1 61 337 3.87 3.78 2.49
## 10 0.23 Very Good H VS1 59.4 61 338 4 4.05 2.39
## # … with 53,930 more rows
La siguiente gráfica nos muestra el número de establecimientos recreativos (centros culturales, sociales, recreativos y deportivos) por estado de acuerdo a información del DENUE de INEGI.
La última gráfica (interactiva) permite conocer el número preciso de establecimientos de estos rubros en cada estado al pasar el cursor por las distintas columnas horizontales.
centros <- recreo %>%
group_by(entidad, tipo_asent, municipio) %>%
count()
centros <- recreo %>%
count(entidad) %>%
ggplot(aes(x = entidad,
y = n,
fill = entidad,
alpha = 0.3,
text= paste0("<b>Entidad:</b>", entidad, "<br>",
"<b>Establecimientos:</b>", n, "<br>"))) +
geom_col() +
coord_flip() +
labs(title = "Servicios de esparcimiento, culturales y deportivos, y otros servicios recreativos.",
subtitle = "Año: 2019",
caption = "Fuente: DENUE") +
theme(legend.position = "none")
centros
ggplotly(tooltip = "text") %>%
config(displayModeBar = F)
Mapa con el valor del Índice de Desarrollo Humano para los municipios del estado de Chiapas para el año 2015.
Imágenes fijas con distintas paletas de colores y una interactiva que permite conocer el valor y el nombre del municipio al navegar por el mapa y hacer click.
# Generamos base de datos
idh_chiapas <- idh %>%
filter(Year == 2015) %>%
filter(Entidad == "Chiapas")
mpios_chiapas <- mpios %>%
filter(NOM_ENT == "Chiapas")
# Combinamos las bases
mapa_chiapas <- merge(x = mpios_chiapas,
y = idh_chiapas,
by.x = "CVEGEO",
by.y = "CODGEO",
all.y = TRUE)
# Checamos que sea un objeto sf y que sea la geometría que queremos
class(mapa_chiapas)
## [1] "sf" "data.frame"
plot(mapa_chiapas, max.plot = 1)
# Hacemos el mapa en ggplot()
# La versión sencilla por tono de color en relación al Valor.
mapa_chiapas %>%
ggplot(aes(fill = Valor)) +
geom_sf()
# Versión 2 en la que metemos la paleta Viridis.
mapa_chiapas %>%
ggplot(aes(fill = Valor)) +
geom_sf() +
scale_fill_gradientn(colors = viridis(begin = 0,
end = 1,
n = 10))
# Versión 3 con información y limpiando la presentación-diseño del mapa e incluyendo información para interactividad así como labels, temas, etc.
mapa_chiapas %>%
ggplot(aes(fill = Valor,
text= paste0("<b>Municipio: </b>", Municipio, "<br>",
"<b>Valor: </b>", Valor, "<br>"))) +
geom_sf(color = "gray80") +
scale_fill_gradientn(colors = viridis(begin = 0,
end = 1,
n = 10)) +
labs(title = "Índice de Desarrollo Humano <br>para el Estado de Chiapas",
subtitle = "Año: 2015",
caption = "Fuente: Informe de Desarrollo Humano Municipal 2010-2015.") +
guides(fill = guide_colourbar(title.position="top", title.hjust = 0.5)) +
theme_bw() +
theme(legend.position = "bottom") +
theme(axis.text = element_blank(),
panel.grid = element_blank(),
panel.border = element_blank(),
panel.background = element_rect(),
axis.ticks = element_blank()) +
theme(plot.title = element_text(hjust = 0.5,
colour = "gray10",
family = "Arial",
face = "bold",
size = 15),
plot.subtitle = element_text(hjust = 0.5,
colour = "gray50",
family = "Arial",
face = "bold",
size = 15),
plot.caption = element_text(colour = "gray50",
hjust = 1))
ggplotly(tooltip = "text") %>%
config(displayModeBar = F)
Presentamos una tabla con 10 diamantes (y sus características: quilates, corte, color, claridad, forma y precio) que se pondrán a la venta (con los mismos precios sugeridos) para recabar fondos para el CIDE. La tabla responde al cursor al pasar por ella.
dt <- diamonds[1:10, 1:7]
dt %>%
kbl() %>%
kable_paper("hover",
full_width = F)
| carat | cut | color | clarity | depth | table | price |
|---|---|---|---|---|---|---|
| 0.23 | Ideal | E | SI2 | 61.5 | 55 | 326 |
| 0.21 | Premium | E | SI1 | 59.8 | 61 | 326 |
| 0.23 | Good | E | VS1 | 56.9 | 65 | 327 |
| 0.29 | Premium | I | VS2 | 62.4 | 58 | 334 |
| 0.31 | Good | J | SI2 | 63.3 | 58 | 335 |
| 0.24 | Very Good | J | VVS2 | 62.8 | 57 | 336 |
| 0.24 | Very Good | I | VVS1 | 62.3 | 57 | 336 |
| 0.26 | Very Good | H | SI1 | 61.9 | 55 | 337 |
| 0.22 | Fair | E | VS2 | 65.1 | 61 | 337 |
| 0.23 | Very Good | H | VS1 | 59.4 | 61 | 338 |
GRACIAS POR SU ATENCIÓN.